

#pragma once


#include "BaseGameManager.h"
#include "StateListener.h"
#include "Control.h"

class GameManager : public BaseGameManager
{

	IEventListener::Ptr mStateListener;

public:

	//! Constructs a new GameManager object.
	//!
	//! @param win A valid pointer to the ogre RenderWindow.
	//! @param keyboard A valid pointer to the OIS::Keyboard.
	//! @param mouse A valid pointer to the OIS::Mouse
	//!
	GameManager(Ogre::RenderWindow * win, OIS::Keyboard * keyboard, 
		OIS::Mouse * mouse);

	//! Registers important game states.
	//!
	void RegisterGameStates();

	//! Starts the first state, LoginScreen.
	//!
	void StartFirstState();

	//! Receives an event when a new frameRendering is queued, forwarding the event to the main state.
	//!
	virtual bool frameRenderingQueued(const Ogre::FrameEvent& evt);


};